package cl.portal.escolares.action;

import java.util.HashMap;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import cl.portal.escolares.DAO.DAOAlumno;
import cl.portal.escolares.DAO.DAOApoderado;
import cl.portal.escolares.DAO.DAOUsuario;
import cl.portal.escolares.domain.Apoderado;
import cl.portal.escolares.domain.Usuario;

import com.opensymphony.xwork2.ActionSupport;

public class ApoderadoAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private static Log _log = LogFactory.getLog(ApoderadoAction.class);

	private Usuario usuario;
	private Long usuarioId;
	private List<Apoderado> apoderados;
	private HashMap<Long, Integer> alumnosMap;
	private int[] diasPago = { 5, 10, 15, 20, 25, 30 };

	public String execute() throws Exception {
		try {
			alumnosMap = new HashMap<Long, Integer>();
			if (getUsuarioId() != null && getUsuarioId() > 0)
				setUsuario(DAOUsuario.get(getUsuarioId()));
			else {
				addActionError(getText("error.login"));
				return "error";
			}

			if (usuario != null) {
				setApoderados(DAOApoderado.list(usuario.getUsuarioId(), null,
						null, null, true));
				for (Apoderado a : apoderados) 
					alumnosMap.put(a.getApoderadoId(), (DAOAlumno.list(
							usuario.getUsuarioId(), a.getApoderadoId(), null,
							null, null, null, null, null, true)).size());
				
				return "success";
			} else {
				addActionError(getText("error.login"));
				return "error";
			}
		} catch (Exception e) {
			_log.error(e);
			addActionError(getText("error.login"));
			return "error";
		}
	}

	public List<Apoderado> getApoderados() {
		return apoderados;
	}

	public void setApoderados(List<Apoderado> apoderados) {
		this.apoderados = apoderados;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public int[] getDiasPago() {
		return diasPago;
	}

	public void setDiasPago(int[] diasPago) {
		this.diasPago = diasPago;
	}

	public Long getUsuarioId() {
		return usuarioId;
	}

	public void setUsuarioId(Long usuarioId) {
		this.usuarioId = usuarioId;
	}

	public static Log get_log() {
		return _log;
	}

	public static void set_log(Log _log) {
		ApoderadoAction._log = _log;
	}

	public HashMap<Long, Integer> getAlumnosMap() {
		return alumnosMap;
	}

	public void setAlumnosMap(HashMap<Long, Integer> alumnosMap) {
		this.alumnosMap = alumnosMap;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

}
